﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Athena.Plugins
{
    public interface Simulator
    {
        Core.Module CurrentModule
        {
            get;
            set;
        }
        string Name
        {
            get;
        }
        void loadSBML(string sSBML);
        bool IsLoaded(Core.Module module);
        void setNumPoints(int numPoints);
        void setTimeEnd(double endTime);
        void setTimeStart(double startTime);
        void reset();
        double[,] simulate();

        bool HasModel
        {
            get;
        }
        System.Collections.ArrayList getAvailableSymbols();
        System.Collections.ArrayList getSelectionList();
        System.Collections.ArrayList getBoundarySpeciesNames();
        System.Collections.ArrayList getFloatingSpeciesNames();
        System.Collections.ArrayList getReactionNames();
        System.Collections.ArrayList getGlobalParameterNames();
        double[] getBoundarySpeciesConcentration();
        double[] getGlobalParameterValues();

        double getValue(string name);
        void setValue(string id, double value);
        void setSelectionList(System.Collections.ArrayList list);
        string SBML { get; set; }
    }
}
